<!DOCTYPE html>
<html>
<head>
<title>Gauges</title>
 <script type="text/javascript">
//This code is MODIFYED by the code runing on the DunoMite--->
var pin1=0;
var pin2=5;
var pin3=0;
//<---This code is MODIFYED by the code runing on the DunoMite
 </script>

 <script type="text/javascript">
 //Creates a gauge on canvasID
 function gauge(width,value,valueLow,valueHige,valueMin,valueMax,valueTrigger,majorTicks,minorTicks,unit,title)
 {
    //Color of the gauge
    //Adjust this to your taste
    this.fillColorFrameFrom="#D0D0D0";
    this.fillColorFrameTo="#A8A8A8";
    this.fillColorBackgroundFrom="#686868";
    this.fillColorBackgroundTo="#000000 ";
    this.fillColorNeedle="#E00000";
    this.fillColorScale="#FFFFFF";
    this.fillColorLow="#6600CC";
    this.fillColorHige="#E00000";
    this.fillColorTrigger="#A8A8A8";
    this.LEDOffColor="#780000";
    this.LEDOnColor="#FF0000";


    //Set member variables
    this.width=width;
    this.value=value;
    this.valueLow=valueLow;
    this.valueHige=valueHige;
    this.valueMax=valueMax;
    this.valueMin=valueMin;
    this.valueTrigger=valueTrigger;
    this.majorTicks=majorTicks;
    this.minorTicks=minorTicks;
    this.unit=unit;
    this.title=title;

    //Calculated values
    this.height = width;
    this.center = width/2;
    this.radiusFrame = (width/2)*0.98;
    this.radiusBackground = (width/2)*0.85;
    this.radiousNeedle = (width/2)*0.05;
    this.radiousLed = (width/2)*0.07;
    this.bottomAngleInRad=1;

    this.draw=draw;
    function draw(canvasID)
    {
	//Get the context
        var c=document.getElementById(canvasID);
        var ctx=c.getContext("2d");

        //Draw the frame
        var grd=ctx.createLinearGradient(0,0,0,this.height);
        grd.addColorStop(0.3,this.fillColorFrameFrom);
        grd.addColorStop(0.7,this.fillColorFrameTo);
        ctx.fillStyle=grd;
        ctx.beginPath();
        ctx.arc(this.center,this.center,this.radiusFrame,0,Math.PI*2,true);
        ctx.closePath();
        ctx.fill();
    
        //Draw the background
        grd=ctx.createLinearGradient(0,0,0,this.height);
        grd.addColorStop(0.3,this.fillColorBackgroundFrom);
        grd.addColorStop(0.7,this.fillColorBackgroundTo);
        ctx.fillStyle=grd;
        ctx.beginPath();
        ctx.arc(this.center,this.center,this.radiusBackground,0,Math.PI*2,true);
        ctx.closePath();
        ctx.fill();

       //Draw the needlecap
       ctx.fillStyle=this.fillColorNeedle;
       ctx.beginPath();
       ctx.arc(this.center,this.center,this.radiousNeedle,0,Math.PI*2,true);
       ctx.closePath();
       ctx.fill();

       //Draw major ticks and scale number
       ctx.strokeStyle=this.fillColorScale;
       ctx.fillStyle=this.fillColorScale;
       ctx.lineCap="round";
       ctx.lineWidth=3;
       ctx.font="10px Arial";
       for (tickNumber=this.valueMin;tickNumber<=this.valueMax;tickNumber=tickNumber+this.majorTicks)
       {

         //Draw tick
         //ray(value,valueMax,valueMin,radiusStart,radiusStop,ceneter,bottomAngleInRad)
	 rayTick= new ray(tickNumber,this.valueMax,this.valueMin,this.radiusBackground*0.95,this.radiusBackground*0.85,this.center,this.bottomAngleInRad);
         ctx.beginPath();
         ctx.moveTo(rayTick.xStart,rayTick.yStart);
         ctx.lineTo(rayTick.xStop,rayTick.yStop);
         ctx.stroke();

         //Draw scalenumber
         //pointOnCircle(value,valueMax,valueMin,radius,center,bottomAngleInRad)
         textCenterPoint = new pointOnCircle(tickNumber,this.valueMax,this.valueMin,this.radiusBackground*0.70,this.center,this.bottomAngleInRad);
         var textSize = ctx.measureText(tickNumber).width;
         ctx.fillText(tickNumber,textCenterPoint.xPoint-(textSize/2),textCenterPoint.yPoint+3);
         ctx.fill();
      }

      //Draw minor ticks
      ctx.lineWidth=1;
      for (tickNumber=this.valueMin;tickNumber<=this.valueMax;tickNumber=tickNumber+this.majorTicks/this.minorTicks)
      {
         //Draw tick
         //ray(value,valueMax,valueMin,radiusStart,radiusStop,ceneter,bottomAngleInRad)
	 rayTick= new ray(tickNumber,this.valueMax,this.valueMin,this.radiusBackground*0.95,this.radiusBackground*0.90,this.center,this.bottomAngleInRad);
         ctx.beginPath();
         ctx.moveTo(rayTick.xStart,rayTick.yStart);
         ctx.lineTo(rayTick.xStop,rayTick.yStop);
         ctx.stroke();
      }

      //Print title on the face of the gauge
      ctx.beginPath();
      ctx.font="10px Arial";
      var textString=this.title;
      var textSize = ctx.measureText(textString);
      ctx.fillText(textString,this.center-(textSize.width/2),(this.height*0.40));
      ctx.fill();

      //Print unit on the face of the gauge
      ctx.beginPath();
      ctx.font="13px Arial";
      var textString=this.unit;
      var textSize = ctx.measureText(textString);
      ctx.fillText(textString,this.center-(textSize.width/2),(this.height*0.87));
      ctx.fill();

      //Print value on the face of the gauge
      ctx.beginPath();
      ctx.font="20px Arial";
      var textString=this.value;
      var textSize = ctx.measureText(textString);
      ctx.fillText(textString,this.center-(textSize.width/2),(this.height*0.70));
      ctx.fill();

      //Plot trigger mark
      ctx.lineWidth=6;
      //ray(value,valueMax,valueMin,radiusStart,radiusStop,ceneter,bottomAngleInRad)
      rayTick= new ray(this.valueTrigger,this.valueMax,this.valueMin,this.radiusBackground*0.96,this.radiusBackground*0.95,this.center,this.bottomAngleInRad);
      ctx.beginPath();
      ctx.strokeStyle=this.fillColorTrigger;
      ctx.moveTo(rayTick.xStart,rayTick.yStart);
      ctx.lineTo(rayTick.xStop,rayTick.yStop);
      ctx.stroke();
      ctx.beginPath();
      ctx.lineWidth=2;
      ctx.strokeStyle=this.fillColorNeedle;
      ctx.moveTo(rayTick.xStart,rayTick.yStart);
      ctx.lineTo(rayTick.xStop,rayTick.yStop);
      ctx.stroke();

      //Plot the lowest mark
      ctx.lineWidth=4;
      //ray(value,valueMax,valueMin,radiusStart,radiusStop,ceneter,bottomAngleInRad)
      rayTick= new ray(this.valueLow,this.valueMax,this.valueMin,this.radiusBackground*0.97,this.radiusBackground*0.95,this.center,this.bottomAngleInRad);
      ctx.beginPath();
      ctx.strokeStyle=this.fillColorLow;
      ctx.moveTo(rayTick.xStart,rayTick.yStart);
      ctx.lineTo(rayTick.xStop,rayTick.yStop);
      ctx.stroke();

      //Plot the highest mark
      //ray(value,valueMax,valueMin,radiusStart,radiusStop,ceneter,bottomAngleInRad)
      rayTick= new ray(this.valueHige,this.valueMax,this.valueMin,this.radiusBackground*0.97,this.radiusBackground*0.95,this.center,this.bottomAngleInRad);
      ctx.beginPath();
      ctx.strokeStyle=this.fillColorHige;
      ctx.moveTo(rayTick.xStart,rayTick.yStart);
      ctx.lineTo(rayTick.xStop,rayTick.yStop);
      ctx.stroke();

      //Handle the warning LED
      var xLED= this.center+this.center*0.4;
      var yLED= this.center-this.center*0.1;
      if(this.value>=this.valueTrigger)
      {
         grd=ctx.createRadialGradient(xLED,yLED,0,xLED,yLED,this.radiousLed);
         grd.addColorStop(0.3,this.LEDOnColor);
         grd.addColorStop(1.0,this.LEDOffColor);
         ctx.fillStyle=grd;
      }
      else
      {
         ctx.fillStyle=this.LEDOffColor;
      }
      ctx.beginPath();
      ctx.arc(xLED,yLED,this.radiousLed,0,Math.PI*2,true);
      ctx.closePath();
      ctx.fill();

      //Draw the needle
      //pointOnCircle(value,valueMax,valueMin,radius,center,bottomAngleInRad)
      needleTipp = new pointOnCircle(this.value,this.valueMax,this.valueMin,this.radiusBackground*0.95,this.center,this.bottomAngleInRad);
      ctx.strokeStyle=this.fillColorNeedle;
      ctx.lineWidth=3; 
      ctx.beginPath();
      ctx.moveTo(this.center,this.center);
      ctx.lineTo(needleTipp.xPoint,needleTipp.yPoint);      
      ctx.stroke();
    }

    //This function calculates a 'ray' between to circles with the same center at a given angle
    this.ray=ray;
    function ray(value,valueMax,valueMin,radiusStart,radiusStop,center,bottomAngleInRad)
    {
       var angleRad= (Math.PI*2)-(bottomAngleInRad/2)-(((value-valueMin)/(valueMax-valueMin))*((Math.PI*2)-(bottomAngleInRad)));
       this.xStop= center + radiusStop*Math.sin(angleRad);
       this.yStop= center + radiusStop*Math.cos(angleRad);
       this.xStart= center + radiusStart*Math.sin(angleRad);
       this.yStart= center + radiusStart*Math.cos(angleRad);
    }
    
    //This function calculates an point in x,y-plain at a given angle on a circle
    this.pointOnCircle=pointOnCircle;
    function pointOnCircle(value,valueMax,valueMin,radius,center,bottomAngleInRad)
    {
       var angleRad= (Math.PI*2)-(bottomAngleInRad/2)-(((value-valueMin)/(valueMax-valueMin))*((Math.PI*2)-(bottomAngleInRad)));
       this.xPoint= center + radius*Math.sin(angleRad);
       this.yPoint= center + radius*Math.cos(angleRad);
    }

 }
 </script>
</head>

<body onload="gauge();">
  <form name="input" action="/" method="post">
    <input type="range" name="RH" min="0" max="100" step="1" value="50"/>
    <input type="range" name="Temp1" min="5" max="30" value="10"/>
    <input type="range" name="Temp2" min="-20" max="30" value="0"/>
    <input type="submit" value="Submit">
  </form>

  <hr />

  <canvas id="gauge1" width="205" height="205">Your browser does not support the canvas element!</canvas>
  <canvas id="gauge2" width="205" height="205">Your browser does not support the canvas element!</canvas>
  <br />
  <canvas id="gauge3" width="400" height="400">Your browser does not support the canvas element!</canvas>
  <script type="text/javascript">
    //Construct a gauge object: width=200 value=87,valueLow=13,valueHige=53,valueMin=0,valueMax=100,valueTriger=50,MajorTicks=10,MinorTicks=5,unit="%",title="Greenhouse"
    gauge1 = new gauge(200,pin1,13,80,0,100,70,10,5,"RH%","Greenhouse");
    //Construct a gauge object: width=200 value=18,valueLow=-13,valueHige=23,valueMin=5,valueMax=30,valueTriger=25,MajorTicks=5,MinorTicks=5,unit="C°","Greenhouse")
    gauge2 = new gauge(200,pin2,5,28,5,30,25,5,5,"C\u00b0","Greenhouse");
//Construct a gauge object: width=200 value=14,valueLow=-18,valueHige=28.2,valueMin=-20,valueMax=30,valueTriger=25,MajorTicks=5,MinorTicks=5,unit="C°",title="Outdoor"
    gauge3 = new gauge(400,pin3,-18,28.2,-20,30,18,5,10,"C\u00b0","Outdoor");
    //Draw the gauges on canvasID="gauge1", canvasID="gauge2, and canvasID="gauge3"
    gauge1.draw('gauge1');
    gauge2.draw('gauge2');
    gauge3.draw('gauge3');
  </script>  
  
  <hr />

<img src="data:image/jpg;base64,
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"/> 

<img src="data:image/jpg;base64,
/9j/4AAQSkZJRgABAQEASABIAAD/4QQzRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAALAAAAcgEyAAIAAAAUAAAAfodp
AAQAAAABAAAAkgAAANQAAABIAAAAAQAAAEgAAAABR0lNUCAyLjYuOAAAMjAxMjowMjoyNSAyMDoz
MToxNAAABZAAAAcAAAAEMDIxMKAAAAcAAAAEMDEwMKABAAMAAAAB//8AAKACAAQAAAABAAAAMqAD
AAQAAAABAAAAJAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABIgEbAAUAAAABAAABKgEoAAMA
AAABAAIAAAIBAAQAAAABAAABMgICAAQAAAABAAAC+QAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQ
SkZJRgABAQAAAQABAAD/2wBDACgcHiMeGSgjISMtKygwPGRBPDc3PHtYXUlkkYCZlo+AjIqgtObD
oKrarYqMyP/L2u71////m8H////6/+b9//j/2wBDASstLTw1PHZBQXb4pYyl+Pj4+Pj4+Pj4+Pj4
+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj/wAARCAAZACQDASIAAhEBAxEB
/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQID
AAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB
AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh
cRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldY
WVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCnU8du0ib9wAzg
5OMVCoywBOK0OHt0UltuRjcevqP0NYpXPRqT5SubbIGyRWbnPP5VDJG0TbW61e8iNhuVH3Z+8Oma
iv2BZBj5sckjrTaJhUu7FOiiipNgq1FciNP4STzkjketVaKadiZRUtyylztlDAjr6cdMVDI++Qt6
0yii4KCjqgooopFH/9n/4QYoaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQg
YmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pgo8eDp4bXBtZXRhIHht
bG5zOng9J2Fkb2JlOm5zOm1ldGEvJz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KCiA8cmRmOkRlc2NyaXB0aW9uIHhtbG5z
OmV4aWY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvJz4KICA8ZXhpZjpDb2xvclNwYWNl
PjQyOTQ5NjcyOTU8L2V4aWY6Q29sb3JTcGFjZT4KICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+Mjcw
PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTkzPC9leGlm
OlBpeGVsWURpbWVuc2lvbj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24g
eG1sbnM6cGRmPSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KIDwvcmRmOkRlc2NyaXB0
aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGhvdG9zaG9wPSdodHRwOi8vbnMuYWRvYmUu
Y29tL3Bob3Rvc2hvcC8xLjAvJz4KICA8cGhvdG9zaG9wOkhpc3Rvcnk+PC9waG90b3Nob3A6SGlz
dG9yeT4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24geG1sbnM6dGlmZj0n
aHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8nPgogIDx0aWZmOk9yaWVudGF0aW9uPjE8L3Rp
ZmY6T3JpZW50YXRpb24+CiAgPHRpZmY6WFJlc29sdXRpb24+NzIvMTwvdGlmZjpYUmVzb2x1dGlv
bj4KICA8dGlmZjpZUmVzb2x1dGlvbj43Mi8xPC90aWZmOllSZXNvbHV0aW9uPgogIDx0aWZmOlJl
c29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiA8L3JkZjpEZXNjcmlwdGlvbj4K
CiA8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOnhtcD0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w
Lyc+CiAgPHhtcDpDcmVhdGVEYXRlPjIwMTEtMDktMjBUMTU6Mzk6NTYrMDI6MDA8L3htcDpDcmVh
dGVEYXRlPgogIDx4bXA6TW9kaWZ5RGF0ZT4yMDExLTA5LTIyVDE4OjE0OjQyKzAyOjAwPC94bXA6
TW9kaWZ5RGF0ZT4KICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDExLTA5LTIyVDE4OjE0OjQyKzAyOjAw
PC94bXA6TWV0YWRhdGFEYXRlPgogIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENT
IFdpbmRvd3M8L3htcDpDcmVhdG9yVG9vbD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVz
Y3JpcHRpb24geG1sbnM6eG1wTU09J2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8nPgog
IDx4bXBNTTpEb2N1bWVudElEIHJkZjpyZXNvdXJjZT0nYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjdl
MGY2YmM3LWU1MmQtMTFlMC05M2IyLWVhY2Y1Mzk2OTRkNicgLz4KIDwvcmRmOkRlc2NyaXB0aW9u
PgoKIDxyZGY6RGVzY3JpcHRpb24geG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50
cy8xLjEvJz4KICA8ZGM6Zm9ybWF0PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KIDwvcmRmOkRlc2Ny
aXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0ncic/Pgr/2wBD
ACgcHiMeGSgjISMtKygwPGRBPDc3PHtYXUlkkYCZlo+AjIqgtObDoKrarYqMyP/L2u71////m8H/
///6/+b9//j/2wBDASstLTw1PHZBQXb4pYyl+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4
+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj/wAARCAAkADIDAREAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAA
AAAAAAIDBAUB/8QAJhAAAgMAAQQBAwUAAAAAAAAAAQIAAxEhBBIiMUETQlFhkaGx0f/EABkBAQAD
AQEAAAAAAAAAAAAAAAABAgMEBf/EAB0RAQEAAgMBAQEAAAAAAAAAAAABAhEDEiExQVH/2gAMAwEA
AhEDEQA/AMmmYPVFDMQF0k/AhF1PqS12MWAB1RpEnSLlIlZQ9aVsdP1BoEaRM5bZ/FZDDffHuQt4
aYSaYHkDR0taWWAEurDkMuYJaTbPkyuMa7r7H6gojBcXCxG4f0Ilrba58ccccd1Qt3VJ5FNBPcDm
++OJXda9eO+bXX1i7pFasYF+0kKB/HJlrNxTDLrnqubM3UQEDX07NgRCFLrikgHGH+y+Lm5Z7utL
sO/uVsashNA8SSQf72WY6v6mGsdB2mrCSvaG5/eFfJVXVE19OUxWG8hjp9DCJF+NuKbsrmzN1kBA
sq06q8twyj8kSYz5J42P1WnxStBobGbCSCM4+PWS/ZzziqhbiLAVKN5l+08exhGyJWmXH4j1dgst
8QAB8A7zIt204sesUSrQgICAgICAgIH/2Q==
"/> 

</body>
</html> 
